package com.comment.pojo.domain.bag;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;

import java.io.Serializable;
import java.util.List;

import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 背包物品(Bag)表实体类
 *
 * @author cxy
 * @since 2024-11-13 15:04:13
 */
@ApiModel("背包物品")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@EqualsAndHashCode(callSuper = true)
@TableName(autoResultMap = true)
public class Bag extends Model<Bag> {// swagger2,mybatis-plus
    ///////////////////////////////////////////////////////////////////////////////////////////////////////// 生成实体字段
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("账号uid")
    private Long uid;

    @TableField(typeHandler = Fastjson2TypeHandler.class)
    @ApiModelProperty("背包数据")
    public List<Long> bagMessage;

    @ApiModelProperty("背包格上限")
    private Long bagMax;

    @ApiModelProperty("状态:0.关闭 1.打开")
    private Integer status;

    @ApiModelProperty("上次打开时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date lastTime;

    ///////////////////////////////////////////////////////////////////////////////////////////////////////// 序列化版本号
    @TableField(exist = false)
    private static final long serialVersionUID = -17384922056400034L;

    /////////////////////////////////////////////////////////////////////////////////////////////////////////// 获取主键值
    @Override
    public Serializable pkVal() {
        return this.uid;
    }

    public boolean bagIsFull() {
        return this.bagMax < this.bagMessage.size();
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////// 非数据库字段
    /////////////////////////////////////////////////////////////////////////////////////////////////////////    领域业务
}

